1. Field of the Invention
The invention pertains to the information systems field, in which a system is constituted by several machines which, in order exchange data, communicate with one another through serial links.
2. Description of the Related Art
A first machine A exchanges data with a second machine B by sending a request to the machine B. Following a read request sent by the machine A to the machine B, the machine B sends the machine A a response which contains the data requested by the machine A. Following a write request sent by the machine A to the machine B, the machine B sends the machine A a response which contains the status of the acceptance of the request, such as an acknowledgement for example. The second machine B exchanges data with the first machine A symmetrically.
The requests and the responses constitute messages which flow between the two machines by means of a bidirectional serial transmission link. This means that the messages are emitted successively in the form of a stream of signals transported by the bidirectional serial transmission link. Various means for the embodiment of bidirectional serial transmission links are known. The use of one or more electrical lines linking the two machines and the use of fiber optics may be cited as non-limiting examples. For example, U.S. Pat. No. 5,347,538, filed in the name of the Applicant, describes a bidirectional serial link using an electrical line.
In the current state of the art, in each machine, the messages to be sent are stored in the order of their appearance in an outgoing buffer memory of the first-in-first-out type, to wait until they can be sent through the bidirectional serial transmission link. Likewise, in each machine, the messages received from the transmission line are stored in the order of their reception in an incoming buffer memory of the first-in-first-out type, to wait until they can be processed by the receiving machine.
The sending of a message through the bidirectional serial transmission link requires sufficient space in the incoming buffer memory of the receiving machine to accept this message. The incoming buffer memory of the receiving machine is cleared as the messages are processed by this machine. If the message is a request, its processing produces a response which is stored in the outgoing buffer memory of the machine which has received this request.
A complete filling of the buffer memories in both machines can block any sending of messages. For example, in the case in which the outgoing and incoming buffer memories are full in each of two machines communicating with one another, if the first message submitted in each of the incoming buffer memories is a request, it cannot be processed unless sufficient space to receive the response has been released in the outgoing buffer memory. But the release of space in the outgoing buffer memory cannot occur unless sufficient space to receive the first message from the outgoing buffer memory has been released in the incoming buffer memory of the other machine. The incoming and outgoing buffer memories block each other's release.
It is conceivable for the outgoing and incoming buffer memories to be given sufficient size so that they are not filled up by the abundance of messages generated by the machines. However, the system's capacity for communication would be limited by the size of the buffer memories. With a given buffer memory size, it would be difficult to increase the rate of exchanges beyond that provided.
It is also conceivable for each machine to be provided with a stack which takes over from the incoming buffer memory. The requests submitted as output from the incoming buffer memory would be stored in this stack, to wait for available space in the outgoing buffer memory to receive the responses to these requests. This would offer the advantage of releasing the incoming buffer memory. However, the space problem would only be postponed and would recur when this stack is completely full. For high-performance systems, it would be necessary to provide buffer memories or stacks with high capacity. Despite the current large-scale integration capacities in electric circuits, it is preferable to allocate a minimum of space to the communication functions and to allocate this space to other functions.